package com.kingyun.gpsinspection.purificationservice.facade.service.jsm.reportTemp;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 报表模板service接口
 * Created by yangcs on 2017/3/9.
 */
public interface JsmReportTempService {

    /**
     * 获取列表数据
     * @param reportTemp
     * @return
     */
    JSONObject list(ReportTemp reportTemp);

    /**
     * 批量删除
     * @param list
     * @return
     */
    Map<String,Object> delRepItem(List<String> list);

    /**
     * 根据组织id查询实体特性
     * @param orgId
     * @return
     */
    List<Ztree> getEntityPorperties(String orgId);

    /**
     * 插入报表模板
     * @param reportTemp
     * @param heads
     * @return
     */
    void saveTemp(ReportTemp reportTemp, List<ReportTempHead> heads, Employee employee);

    /**
     * 根据id查询模板信息
     * @param reportTempId
     * @return
     */
    ReportTemp queryById(String reportTempId);

    /**
     * 根据层级和模板id查询表头
     * @param reportTempId
     * @param level
     * @return
     */
    List<ReportTempHead> queryHeadsByIdAndLevel(String reportTempId, int level);

    /**
     * 根据模板id查询合计
     * @param reportTempId
     * @return
     */
    List<ReportTempTotal> queryTotalsById(String reportTempId);

    /**
     * 修改模板
     * @param reportTemp
     * @param heads
     */
    void updateTemp(ReportTemp reportTemp, List<ReportTempHead> heads, Employee employee);

    /**
     * 获取表头()
     * @param reportTempId
     * @param reportId
     * @return
     */
    JSONArray getHeads(String reportTempId, String reportId);

    /**
     * 将表头集合转成json
     * @param list
     * @return
     */
    JSONArray getJsonHead(List<ReportTempHead> list);

    /**
     * 获取合计信息
     * @param reportTempId
     * @param reportId
     * @return
     */
    JSONArray getSums(String reportTempId, String reportId);

    /**
     * 合计集合转json
     * @param totals
     * @param reportId
     * @return
     */
    JSONArray getJsonSums(List<ReportTempTotal> totals, String reportId);

    /**
     * 获取基本信息
     * @param reportTempId      报表模板id
     * @param reportId          报表id
     * @param orgName           组织名称
     * @param reportTempName    报表名称
     * @param reportType        报表类型1日报表2月报表
     * @param editable          是否可以编辑
     * @return
     */
    JSONObject getInfo(String reportTempId, String reportId, String orgName, String reportTempName, int reportType, boolean editable);

    /**
     * 获取报表数据（通过列表进入）
     * @param reportId      报表id
     * @param remark        大事纪要
     * @return
     */
    JSONArray getData(String reportTempId, String reportId, String remark);

    /**
     * 通过报表模板新增或者修改页面进入
     * @param heads
     * @param startHour
     * @param cycleInterval
     * @param reportType
     * @return
     */
    JSONArray getData(List<ReportTempHead> heads, int startHour, int cycleInterval, int reportType);

    /**
     * 查询整点数据
     * @param strs      测量点
     * @param datestr   日期
     * @param timestr   整点
     * @return
     */
    HashMap queryPointData(List<HashMap> strs, String datestr, String timestr);



    /**
     * 找到某个组织下还没有关联的数据集
     * @param reportTemp
     * @return
     */
    Map<String,Object> queryByOrgIdWithoutAssociate(ReportTemp reportTemp);



}
